48k' ('IF1bis') is intended to be a functional substitute for the 'ZX Interface 1'® of Sinclair Research Ltd, providing the host machine with similar storage and communication capabilities, yet on a quite different hardware platform. Nevertheless, because the: - 'shadow ROM' paging mechanism for extending the BASIC interpreter, the - 'extended BASIC' syntax, the - 'hook-code' method of accessing 'shadow ROM' functions, the - system variables and - channel descriptors are all the same as the original’s, full software compatibility is ensured at BASIC and 'hook code' level, for the supported hardware devices. As the 'IF1bis' was constantly developed since 1994, four different versions were built, which besides sharing the same operating system have little more in common than: - absence of read-only memory, - absence of hardware traps, - spare memory configured as RAM drives.    1994 – Version 1aThe first version was designed as an expandable interface, with a four-slot backplane, fully buffered system bus and own voltage regulator, all fitted in a modified Atari GameSelex® case. The actual 'IF1bis', built on an Apple II proto-typing card, from standard logic ICs, has following specifications: Memory: - One 32, 128 or 512 Kbyte SRAM chip with industry-standard non-volatile controller Storage:- Three 128 Kbyte (256-sector) RAM drivesPeripheral ports:- ' Centronics' parallel printer, - ' Kempston' joystick. Operating system:- 'Shadow ROM' compatible with the Sinclair RS-232 functions. - ESC/P 32/64-columns printer driver integrated
- A PIO-mode IDE controller, using the A8 address line to differentiate between first and second byte of 16-bit I/O operations, built on a separate (trimmed ISA XT prototyping) card, from standard logic ICs, was added to the interface. - A 16-bit FAT-based hard-disk files system was devised to be suitable for an 8-bit processor by way of limiting the size of logical ‘Microdrives’ to 32 Mbyte (65536 sectors), thus avoiding 32-bit arithmetic. Compatibility with the syntax and data structures of the original ' ZX Interface 1'® could still be maintained, using the upper bytes of the system variables D_STRx, and N_STRx, which should always be zero, for storing the path length and respectively the 'file type' along with the first three header-block preamble bytes at offset 28-30 of M- channel descriptors for the 'file type', upper byte of record number and 'device code'. - Direct file transfer between the interface and external data sources was made possible by including in the 'shadow ROM' a parallel port nibble-mode communication driver and a remote file system for client-server networking, which allows using disk space on a machine running a suitable sever applet, as one 'Microdrive' of unlimited size.
In preparation of further development, a 36-macro-cell CPLD was programmed to act as a one-chip IDE controller for Z80-based systems. |
|   2004 – Version 2aIncorporating the logic circuitry in one 72-macro-cell CPLD reduced the size of the interface to the extent that it could fit on half a eurocard 3U, inside a Multicomp MB3 box, while retaining the same functionality.  2005 – 2008 Versions 2b – 2e
The operating system’s memory layout was optimized to the current configuration: - 'Shadow ROM': 0000-2DFF - Work area: 2E00-2FFF - Sector buffers: 3000-3FFF  2009 – Version 2f
Five input lines were added to the printer port, in place of ground wires, so that it can also function as a streaming parallel port, with 8 input, 8 output and 4 control signals. - A MCU-based add-on device was designed to plug into the parallel port of the interface and provide:  2010 – SD card support
- A SD card socket was attached to the SPI port of the PP peripheral module. - The common file system for hard drive and SD card was enhanced by implementing allocation unit sizes other than 1 sector/cluster: 2, 4, 8 and 16. As a suitable MCU model became available, a new peripheral module was designed, connected directly to the system's data bus and featuring: - full-speed USB device port,   A convenient solution was found for an 'internal' version of the interface, housed, together with a hard disk, in a dk’tronics® keyboard case. - The parallel and joystick ports of the previous design were eliminated, resulting in a smaller 'base board', connected directly to the CPU socket and a SB peripheral module. - To make sufficient headroom for a wedge-cable, the heat sink was removed and, at the same occasion, the (anyway malfunctioning) onboard power circuits of an issue 3B ZX Spectrum 48k were replaced with a four-pin connector for an external -12V, +5V and +12V supply. - The SB peripheral board was attached to an aluminum plate, exposing its micro- SD card socket and mini- USB connector, on the right side of the case. Aiming at a model suited for small-scale production, the IDE port was eliminated, allowing a simplified test prototype to be built, based on a smaller, 36-macrocell CPLD.  As a further rationalization step, the RAM drive feature was dropped, in order to reduce the non-volatile SRAM size to the actually necessary 32 KBytes and free up six CPLD I/O lines. On the other hand, a supply voltage monitoring circuit was added, to protect the non-volatile SRAM contents at power-off. The resulted design, laid out on a 100 x 49.5 mm, two sided PCB, meets the conditions for a feasible (home-) production model. The first version 4b units were assembled in January and performed according to expectations. |